#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){

    pid_t id = fork();          // 创建子进程
    if(id < 0){
        perror("fork");
        exit(1);
    }
    else if(id == 0){           // 子进程
        int cnt = 5;
        while(cnt--){
            printf("i am child! cnt : %d ; pid : %d ; ppid : %d\n", cnt, getpid(), getppid());
            sleep(1);
        }
        exit(105);
    }else{                      // 父进程
        printf("i am father! pid : %d ; ppid : %d\n", getpid(), getppid());
       
        // sleep(7);
        int status = 0;
        pid_t ret = waitpid(id, &status, 0); // 此时等价于 wiat(NULL);
        if(ret > 0){
            printf("等待子进程成功！ret : %d; 退出码：status：%d\n",ret, (status >> 8)&0xFF);
        }
        //while(1){ 
        //    printf("i am father! pid : %d ; ppid : %d\n", getpid(), getppid());
        //    sleep(1);
        //}
    }

    return 0;
}
